# Copyright 2018- The Pixie Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc

from src.api.public.cloudapipb import cloudapi_pb2 as src_dot_api_dot_public_dot_cloudapipb_dot_cloudapi__pb2


class ClusterManagerStub(object):
    """The API to access Vizier cluster info, connection info
    for direct access clusters, and configuration management for the cluster.
    """

    def __init__(self, channel):
        """Constructor.

        Args:
            channel: A grpc.Channel.
        """
        self.GetCluster = channel.unary_unary(
                '/pl.public.cloudapi.ClusterManager/GetCluster',
                request_serializer=src_dot_api_dot_public_dot_cloudapipb_dot_cloudapi__pb2.GetClusterRequest.SerializeToString,
                response_deserializer=src_dot_api_dot_public_dot_cloudapipb_dot_cloudapi__pb2.GetClusterResponse.FromString,
                )
        self.UpdateClusterConfig = channel.unary_unary(
                '/pl.public.cloudapi.ClusterManager/UpdateClusterConfig',
                request_serializer=src_dot_api_dot_public_dot_cloudapipb_dot_cloudapi__pb2.UpdateClusterConfigRequest.SerializeToString,
                response_deserializer=src_dot_api_dot_public_dot_cloudapipb_dot_cloudapi__pb2.UpdateClusterConfigResponse.FromString,
                )
        self.GetClusterConnection = channel.unary_unary(
                '/pl.public.cloudapi.ClusterManager/GetClusterConnection',
                request_serializer=src_dot_api_dot_public_dot_cloudapipb_dot_cloudapi__pb2.GetClusterConnectionRequest.SerializeToString,
                response_deserializer=src_dot_api_dot_public_dot_cloudapipb_dot_cloudapi__pb2.GetClusterConnectionResponse.FromString,
                )


class ClusterManagerServicer(object):
    """The API to access Vizier cluster info, connection info
    for direct access clusters, and configuration management for the cluster.
    """

    def GetCluster(self, request, context):
        """Returns ClusterInfo for a single cluster if specified in the request,
        otherwise returns info for all clusters in an org.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def UpdateClusterConfig(self, request, context):
        """Modifies the configuration for a cluster.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetClusterConnection(self, request, context):
        """Returns the information necessary to connect to the specified cluster. Making this call
        is only necessary for direct mode (non-passthrough) connections. Passthrough should talk
        to the same cloud URL as this API and use the same authentication.
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')


def add_ClusterManagerServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'GetCluster': grpc.unary_unary_rpc_method_handler(
                    servicer.GetCluster,
                    request_deserializer=src_dot_api_dot_public_dot_cloudapipb_dot_cloudapi__pb2.GetClusterRequest.FromString,
                    response_serializer=src_dot_api_dot_public_dot_cloudapipb_dot_cloudapi__pb2.GetClusterResponse.SerializeToString,
            ),
            'UpdateClusterConfig': grpc.unary_unary_rpc_method_handler(
                    servicer.UpdateClusterConfig,
                    request_deserializer=src_dot_api_dot_public_dot_cloudapipb_dot_cloudapi__pb2.UpdateClusterConfigRequest.FromString,
                    response_serializer=src_dot_api_dot_public_dot_cloudapipb_dot_cloudapi__pb2.UpdateClusterConfigResponse.SerializeToString,
            ),
            'GetClusterConnection': grpc.unary_unary_rpc_method_handler(
                    servicer.GetClusterConnection,
                    request_deserializer=src_dot_api_dot_public_dot_cloudapipb_dot_cloudapi__pb2.GetClusterConnectionRequest.FromString,
                    response_serializer=src_dot_api_dot_public_dot_cloudapipb_dot_cloudapi__pb2.GetClusterConnectionResponse.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'pl.public.cloudapi.ClusterManager', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))


 # This class is part of an EXPERIMENTAL API.
class ClusterManager(object):
    """The API to access Vizier cluster info, connection info
    for direct access clusters, and configuration management for the cluster.
    """

    @staticmethod
    def GetCluster(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/pl.public.cloudapi.ClusterManager/GetCluster',
            src_dot_api_dot_public_dot_cloudapipb_dot_cloudapi__pb2.GetClusterRequest.SerializeToString,
            src_dot_api_dot_public_dot_cloudapipb_dot_cloudapi__pb2.GetClusterResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def UpdateClusterConfig(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/pl.public.cloudapi.ClusterManager/UpdateClusterConfig',
            src_dot_api_dot_public_dot_cloudapipb_dot_cloudapi__pb2.UpdateClusterConfigRequest.SerializeToString,
            src_dot_api_dot_public_dot_cloudapipb_dot_cloudapi__pb2.UpdateClusterConfigResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)

    @staticmethod
    def GetClusterConnection(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(request, target, '/pl.public.cloudapi.ClusterManager/GetClusterConnection',
            src_dot_api_dot_public_dot_cloudapipb_dot_cloudapi__pb2.GetClusterConnectionRequest.SerializeToString,
            src_dot_api_dot_public_dot_cloudapipb_dot_cloudapi__pb2.GetClusterConnectionResponse.FromString,
            options, channel_credentials,
            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
